﻿
//扑克牌 正面 、反面

#ifndef CARDPANEL_H
#define CARDPANEL_H

#include <QWidget>

#include "card.h"
#include "player.h"

class CardPanel : public QWidget {
  Q_OBJECT
 public:
  explicit CardPanel(QWidget* parent = nullptr);

  // 设置获取图片函数
  void setImage(const QPixmap& front, const QPixmap& back);
  QPixmap getImage();  //获取当前显示图片

  // 设置扑克牌显示面
  void setFrontSide(bool flag);
  bool isFrontSide();

  // 记录窗口是否被选中了
  void setSeclected(bool flag);
  bool isSelected();

  // 扑克牌的花色以及点数
  void setCard(const Card& card);
  Card getCard();  //获取card实例

  // 扑克牌的所有者
  void setOwner(Player* player);
  Player* getOwner();

  // 模拟扑克牌的点击事件
  void clicked();

 protected:
  void paintEvent(QPaintEvent* event);  //画图事件来显示图片 由update()触发
  void mousePressEvent(QMouseEvent* event);  //

 signals:
  void cardSelected(Qt::MouseButton button);

 private:
  QPixmap m_front;        //正面
  QPixmap m_back;         //反面
  bool m_isfront = true;  //当前显示面
  bool m_isSelect = false;
  Card m_card;
  Player* m_owner = nullptr;  //所有者
};

#endif  // CARDPANEL_H
